@echo off
chcp 65001 >nul
echo 功能：将所有文件夹下的文件序列化重命名

setlocal EnableDelayedExpansion

:: 等待用户按键
set /p dummy=按 Enter 键开始：

:: 记录开始时间（秒）
for /f "tokens=1-4 delims=:.," %%a in ("%TIME%") do (
    set /a start_seconds=%%a*3600 + %%b*60 + %%c
    set start_milliseconds=%%d
)

:: 初始化总文件计数
set /a total_count=0

:: 遍历当前目录下的所有文件夹
for /d %%D in (*) do (
    cd "%%D"

    :: 初始化当前文件夹的文件计数
    set /a count=0

    :: 遍历文件夹下的所有文件
    for %%F in (*) do (
        set /a count+=1
        set /a total_count+=1
        set "num=000!count!"

        :: 获取文件扩展名
        for %%E in ("%%F") do set "ext=%%~xE"

        :: 生成新的文件名（带扩展名）
        set "newname=!num:~-3!!ext!"

        :: 避免重命名导致死循环
        if /I not "%%F"=="!newname!" ren "%%F" "!newname!"
    )

    echo 文件夹 %%D 处理文件数：!count!
    cd ..
)

:: 记录结束时间（秒）
for /f "tokens=1-4 delims=:.," %%a in ("%TIME%") do (
    set /a end_seconds=%%a*3600 + %%b*60 + %%c
    set end_milliseconds=%%d
)

:: 计算耗时（秒）
set /a elapsed_seconds=end_seconds - start_seconds
:: 防止跨午夜导致负值
if %elapsed_seconds% lss 0 set /a elapsed_seconds+=86400

:: 输出结果
echo 处理完成，总计处理文件数：%total_count%（耗时 %elapsed_seconds% 秒）
set /p dummy=按 Enter 键关闭：
exit